C++中string、char *、char[]、const char*的转换 您所在的位置:网站首页 c语言char*转换为char 数组的方法 C++中string、char *、char[]、const char*的转换

C++中string、char *、char[]、const char*的转换

2022-03-23 20:04| 来源: 网络整理| 查看: 265

简述:

1) char*转string:可以直接赋值。 2) char[]转string:可以直接赋值。 3) char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数。 4) string转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数 5) string转char*:调用string对象的c_str函数或data函数或copy函数。 6) char[]转char*:直接赋值即可。

使用时,要对源格式和目标格式进行初始化。源格式赋值为具体的内容,目标格式赋值为空。

总结如下:

A. 变成string,直接赋值。 B. char[]变成别的,直接赋值。 C. char*变const char*容易,const char*变char*麻烦。(const char*); D. string变char*要通过const char*中转。 E. 变成char[]。string逐个赋值,char* const char* strncpy_s()

1、string转char*

把string转换为char* 有3种方法:data(); c_str(); copy();

其中,data()除了返回字符串内容外,不附加结束符'\0',而c_str()返回一个以‘\0’结尾的字符数组。

1) 调用string的data()函数

string str = "hello"; const char* p = str.data();//加const或者用char *p=(char*)str.data();

同时有一点需要说明,这里在devc++中编译需要添加const,否则会报错invalid conversion from const char*  to char *,这里可以再前面加上const或者在等号后面给强制转化成char*的类型。

2) 调用string的c_str()函数

string str=“world”; const char *p = str.c_str();//同上,要加const或者等号右边用char*

//一定要使用strcpy()函数等来操作方法c_str()返回的指针 //比如:最好不要这样: char* c; string s="1234"; c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析构,其内容被处理 //应该这样用: char c[20]; string s="1234"; strcpy(c,s.c_str()); //这样才不会出错,c_str()返回的是一个临时指针,不能对其进行操作 //再举个例子 //c_str() 以 char* 形式传回 string 内含字符串 //如果一个函数要求char*参数,可以使用c_str()方法: string s = "Hello World!"; printf("%s", s.c_str()); //输出 "Hello World!"

3) 调用string的copy()函数

string str="hmmm"; char p[50]; str.copy(p, 5, 0);//这里5代表复制几个字符,0代表复制的位置, *(p+5)=‘\0’;//注意手动加结束符!!!

2、char*转string

可以直接赋值

string s; char *p = "hello"; s = p;

3、string转char[]

不可以直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数

string pp = "dagah"; char p[8]; int i; for( i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有